package com.example.java8.feature_03;

import java.time.LocalTime;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalField;

public class TestLocalTime {

    public static void main(String[] args){

        LocalTime nowTime = LocalTime.now();

        // 常用方法
        System.out.println("现在时间:" + nowTime);
        System.out.println("时:" + nowTime.getHour());
        System.out.println("分:" + nowTime.getMinute());
        System.out.println("秒:" + nowTime.getSecond());
        System.out.println("纳秒:" + nowTime.getNano());
        System.out.println("当前毫秒:" + nowTime.getLong(ChronoField.MILLI_OF_SECOND));
        System.out.println("当前微秒:" + nowTime.getLong(ChronoField.MICRO_OF_SECOND));
        System.out.println("今天毫秒:" + nowTime.getLong(ChronoField.MILLI_OF_DAY));
        System.out.println("今天微秒:" + nowTime.getLong(ChronoField.MICRO_OF_DAY));

        // 加
        LocalTime plusTime = nowTime
                .plusHours(1)               // 加一小时
                .plusMinutes(1)           // 加一分钟
                .plusSeconds(1)           // 加一秒
                .plusNanos(1000);           // 加1000纳秒
        System.out.println("加后的时间:" + plusTime);

        // 减
        LocalTime minusTime = nowTime
                .minusHours(1)         // 减一消失
                .minusMinutes(1)     // 减一分钟
                .minusSeconds(1)     // 减一秒
                .minusNanos(1000);     // 减1000纳秒
        System.out.println("减后的时间:" + minusTime);

        // 注意:加减后的得到新LocalTime才是最新日期,而旧的nowTime依旧不变
        System.out.println("现在时间:" + nowTime);

        // 修改
        LocalTime withTime = nowTime.withHour(16)       // 修改小时
                .withMinute(24)                         // 修改分钟
                .withSecond(35)                         // 修改秒
                .withNano(1000);           // 修改纳秒
        System.out.println("修改后的时间:" + withTime);

        // 比较
        System.out.println(withTime.isBefore(nowTime));     // 之前
        System.out.println(withTime.isAfter(nowTime));      // 之后
    }

}
